#pragma once

#include "CValue.h"

class CWeakRef;
class CVisualTransition;
class CControl;
class CFrameworkElement;
class CVisualState;
class CVisualStateGroup;

class VisualTransitionCompletedData
{
private: 
	CWeakRef * m_pTransitionWeakRef;
	CWeakRef * m_pRootWeakRef;
	CWeakRef * m_pImplRootWeakRef;
	CWeakRef * m_pOldVisualStateWeakRef;
	CWeakRef * m_pNewVisualStateWeakRef;
	CWeakRef * m_pGroupWeakRef;
public: 
	CValue m_EventListenerToken;
private: 
	VisualTransitionCompletedData();
	static HRESULT GetWeakRef(CCoreServices * pCoreServices, CDependencyObject * pObject, CWeakRef * * ppWeakRef);
public: 
	static HRESULT Create(CCoreServices * pCoreServices, CVisualTransition * pTransition, CControl * pRoot, CFrameworkElement * pImplRoot, CVisualState * pOldVisualState, CVisualState * pNewVisualState, CVisualStateGroup * pGroup, VisualTransitionCompletedData * * ppVisualTransitionCompletedData);
	~VisualTransitionCompletedData();
	CVisualTransition * GetVisualTransition();
	CControl * GetRoot();
	CFrameworkElement * GetImplRoot();
	CVisualState * GetNewVisualState();
	CVisualState * GetOldVisualState();
	CVisualStateGroup * GetVisualStateGroup();
};